﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using condortravel.operaciones.business.incidenciasOperaciones;
using condortravel.operaciones.persistence.tourImpl;
using condortravel.operaciones.entities.Entities;
using condortravel.operaciones.business.tour;
using condortravel.operaciones.persistence.operacionesImpl;
using condortravel.operaciones.core.DataModel;

namespace condortravel.operaciones.business.tourImpl
{
    public class TourServicesImpl : TourServices
    {
        #region Businness Objects

        private TourDAOImpl tourDAOImpl;
        private RecursosSolicitadoDAOImpl recursosSolicitadoDAOImpl;
        private DetalleRecursosSolicitadoDAOImpl detalleRecursosSolicitadoDAOImpl;
        private TrasladoDAOImpl trasladoDAOImpl;
        private TransporteDAOImpl transporteDAOImpl;
        private ChoferDAOImpl choferDAOImpl;

        public ChoferDAOImpl ChoferDAO
        {
            set { choferDAOImpl = value; }
        }

        public TransporteDAOImpl TransporteDAO
        {
            set { transporteDAOImpl = value; }
        }

        public TrasladoDAOImpl TrasladoDAO
        {
            set { trasladoDAOImpl = value; }
        }

        public DetalleRecursosSolicitadoDAOImpl DetalleRecursosSolicitadoDAO
        {
            set { detalleRecursosSolicitadoDAOImpl = value; }
        }

        public RecursosSolicitadoDAOImpl RecursosSolicitadoDAO
        {
            set { recursosSolicitadoDAOImpl = value; }
        }

        public TourDAOImpl TourDAO
        {
            set { tourDAOImpl = value; }
        }

       #endregion



        public List<core.DataModel.Tb_Tour> getListTourByCriteria(FilterTourCriteria criteria)
        {
            return tourDAOImpl.getListTourByCriteria(criteria);
        }




        public List<core.DataModel.Tb_RecursosSolicitados> getListRecursosSolicitadosGuiasByTour(FilterRecursosSolicitadosCriteria criteria)
        {
            return recursosSolicitadoDAOImpl.getListRecursosSolicitadosGuiasByTour(criteria);
        }


        public core.DataModel.Tb_Tour getTourById(int tour_ID)
        {
            return tourDAOImpl.getByID(tour_ID);
        }


        public core.DataModel.Tb_RecursosSolicitados getRecursosSolicitadosById(int recursoSolicitado_ID)
        {
            return recursosSolicitadoDAOImpl.getByID(recursoSolicitado_ID);
        }


        public core.DataModel.Tb_RecursosSolicitados updateEstadoRecursoSolicitado(core.DataModel.Tb_RecursosSolicitados entity)
        {
            return recursosSolicitadoDAOImpl.updateEstado(entity);
        }

        public List<core.DataModel.Tb_Detalle_RecursosSolicitados> getListDetalleRecursosSolicitadosGuiasgetListByCriteria(FilterDetalleRecursosSolicitadosCriteria criteria)
        {
            return detalleRecursosSolicitadoDAOImpl.getListDetalleRecursosSolicitadosGuiasByCriteria(criteria);
            
        }

        public void saveDetalleRecursosSolicitados(core.DataModel.Tb_Detalle_RecursosSolicitados entity)
        {
            if (entity.detalleRecursoSolicitado_ID == 0)
            {
                detalleRecursosSolicitadoDAOImpl.add(entity);
            }
            else
            {
                detalleRecursosSolicitadoDAOImpl.update(entity);
            }
        }


        public void deleteDetalleRecursosSolicitados(int pk)
        {
            detalleRecursosSolicitadoDAOImpl.delete(pk);
        }


        public List<core.DataModel.Tb_RecursosSolicitados> getListRecursosSolicitadosTrasladosByTour(FilterRecursosSolicitadosCriteria criteria)
        {
            return recursosSolicitadoDAOImpl.getListRecursosSolicitadosTrasladosByTour(criteria);
          
        }


        public void saveTraslado(core.DataModel.Tb_Traslado entity)
        {
            trasladoDAOImpl.add(entity);
        }

        public List<core.DataModel.Tb_Transporte> getListAllTransporte()
        {
            return transporteDAOImpl.getListAll();
        }

        public List<core.DataModel.Tb_Chofer> getListAllChofer()
        {
            return choferDAOImpl.getListAll();
        }


        public List<core.DataModel.Tb_Tour> getReporteTour(FilterTourCriteria filter)
        {
            return tourDAOImpl.getReporteTour(filter);
        }

    }
}
